↳ Prolog
↳ PrologToPiTRSProof
log2_in_ga(X, Y) → U1_ga(X, Y, log2_in_ggga(X, 0, s(0), Y))
log2_in_ggga(s(s(X)), Half, Acc, Y) → U2_ggga(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
log2_in_ggga(X, s(s(Half)), Acc, Y) → U3_ggga(X, Half, Acc, Y, small_in_g(X))
small_in_g(0) → small_out_g(0)
small_in_g(s(0)) → small_out_g(s(0))
U3_ggga(X, Half, Acc, Y, small_out_g(X)) → U4_ggga(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
log2_in_ggga(X, Half, Y, Y) → U5_ggga(X, Half, Y, small_in_g(X))
U5_ggga(X, Half, Y, small_out_g(X)) → U6_ggga(X, Half, Y, small_in_g(Half))
U6_ggga(X, Half, Y, small_out_g(Half)) → log2_out_ggga(X, Half, Y, Y)
U4_ggga(X, Half, Acc, Y, log2_out_ggga(Half, s(0), s(Acc), Y)) → log2_out_ggga(X, s(s(Half)), Acc, Y)
U2_ggga(X, Half, Acc, Y, log2_out_ggga(X, s(Half), Acc, Y)) → log2_out_ggga(s(s(X)), Half, Acc, Y)
U1_ga(X, Y, log2_out_ggga(X, 0, s(0), Y)) → log2_out_ga(X, Y)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
log2_in_ga(X, Y) → U1_ga(X, Y, log2_in_ggga(X, 0, s(0), Y))
log2_in_ggga(s(s(X)), Half, Acc, Y) → U2_ggga(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
log2_in_ggga(X, s(s(Half)), Acc, Y) → U3_ggga(X, Half, Acc, Y, small_in_g(X))
small_in_g(0) → small_out_g(0)
small_in_g(s(0)) → small_out_g(s(0))
U3_ggga(X, Half, Acc, Y, small_out_g(X)) → U4_ggga(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
log2_in_ggga(X, Half, Y, Y) → U5_ggga(X, Half, Y, small_in_g(X))
U5_ggga(X, Half, Y, small_out_g(X)) → U6_ggga(X, Half, Y, small_in_g(Half))
U6_ggga(X, Half, Y, small_out_g(Half)) → log2_out_ggga(X, Half, Y, Y)
U4_ggga(X, Half, Acc, Y, log2_out_ggga(Half, s(0), s(Acc), Y)) → log2_out_ggga(X, s(s(Half)), Acc, Y)
U2_ggga(X, Half, Acc, Y, log2_out_ggga(X, s(Half), Acc, Y)) → log2_out_ggga(s(s(X)), Half, Acc, Y)
U1_ga(X, Y, log2_out_ggga(X, 0, s(0), Y)) → log2_out_ga(X, Y)
LOG2_IN_GA(X, Y) → U1_GA(X, Y, log2_in_ggga(X, 0, s(0), Y))
LOG2_IN_GA(X, Y) → LOG2_IN_GGGA(X, 0, s(0), Y)
LOG2_IN_GGGA(s(s(X)), Half, Acc, Y) → U2_GGGA(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
LOG2_IN_GGGA(s(s(X)), Half, Acc, Y) → LOG2_IN_GGGA(X, s(Half), Acc, Y)
LOG2_IN_GGGA(X, s(s(Half)), Acc, Y) → U3_GGGA(X, Half, Acc, Y, small_in_g(X))
LOG2_IN_GGGA(X, s(s(Half)), Acc, Y) → SMALL_IN_G(X)
U3_GGGA(X, Half, Acc, Y, small_out_g(X)) → U4_GGGA(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
U3_GGGA(X, Half, Acc, Y, small_out_g(X)) → LOG2_IN_GGGA(Half, s(0), s(Acc), Y)
LOG2_IN_GGGA(X, Half, Y, Y) → U5_GGGA(X, Half, Y, small_in_g(X))
LOG2_IN_GGGA(X, Half, Y, Y) → SMALL_IN_G(X)
U5_GGGA(X, Half, Y, small_out_g(X)) → U6_GGGA(X, Half, Y, small_in_g(Half))
U5_GGGA(X, Half, Y, small_out_g(X)) → SMALL_IN_G(Half)
log2_in_ga(X, Y) → U1_ga(X, Y, log2_in_ggga(X, 0, s(0), Y))
log2_in_ggga(s(s(X)), Half, Acc, Y) → U2_ggga(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
log2_in_ggga(X, s(s(Half)), Acc, Y) → U3_ggga(X, Half, Acc, Y, small_in_g(X))
small_in_g(0) → small_out_g(0)
small_in_g(s(0)) → small_out_g(s(0))
U3_ggga(X, Half, Acc, Y, small_out_g(X)) → U4_ggga(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
log2_in_ggga(X, Half, Y, Y) → U5_ggga(X, Half, Y, small_in_g(X))
U5_ggga(X, Half, Y, small_out_g(X)) → U6_ggga(X, Half, Y, small_in_g(Half))
U6_ggga(X, Half, Y, small_out_g(Half)) → log2_out_ggga(X, Half, Y, Y)
U4_ggga(X, Half, Acc, Y, log2_out_ggga(Half, s(0), s(Acc), Y)) → log2_out_ggga(X, s(s(Half)), Acc, Y)
U2_ggga(X, Half, Acc, Y, log2_out_ggga(X, s(Half), Acc, Y)) → log2_out_ggga(s(s(X)), Half, Acc, Y)
U1_ga(X, Y, log2_out_ggga(X, 0, s(0), Y)) → log2_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
LOG2_IN_GA(X, Y) → U1_GA(X, Y, log2_in_ggga(X, 0, s(0), Y))
LOG2_IN_GA(X, Y) → LOG2_IN_GGGA(X, 0, s(0), Y)
LOG2_IN_GGGA(s(s(X)), Half, Acc, Y) → U2_GGGA(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
LOG2_IN_GGGA(s(s(X)), Half, Acc, Y) → LOG2_IN_GGGA(X, s(Half), Acc, Y)
LOG2_IN_GGGA(X, s(s(Half)), Acc, Y) → U3_GGGA(X, Half, Acc, Y, small_in_g(X))
LOG2_IN_GGGA(X, s(s(Half)), Acc, Y) → SMALL_IN_G(X)
U3_GGGA(X, Half, Acc, Y, small_out_g(X)) → U4_GGGA(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
U3_GGGA(X, Half, Acc, Y, small_out_g(X)) → LOG2_IN_GGGA(Half, s(0), s(Acc), Y)
LOG2_IN_GGGA(X, Half, Y, Y) → U5_GGGA(X, Half, Y, small_in_g(X))
LOG2_IN_GGGA(X, Half, Y, Y) → SMALL_IN_G(X)
U5_GGGA(X, Half, Y, small_out_g(X)) → U6_GGGA(X, Half, Y, small_in_g(Half))
U5_GGGA(X, Half, Y, small_out_g(X)) → SMALL_IN_G(Half)
log2_in_ga(X, Y) → U1_ga(X, Y, log2_in_ggga(X, 0, s(0), Y))
log2_in_ggga(s(s(X)), Half, Acc, Y) → U2_ggga(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
log2_in_ggga(X, s(s(Half)), Acc, Y) → U3_ggga(X, Half, Acc, Y, small_in_g(X))
small_in_g(0) → small_out_g(0)
small_in_g(s(0)) → small_out_g(s(0))
U3_ggga(X, Half, Acc, Y, small_out_g(X)) → U4_ggga(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
log2_in_ggga(X, Half, Y, Y) → U5_ggga(X, Half, Y, small_in_g(X))
U5_ggga(X, Half, Y, small_out_g(X)) → U6_ggga(X, Half, Y, small_in_g(Half))
U6_ggga(X, Half, Y, small_out_g(Half)) → log2_out_ggga(X, Half, Y, Y)
U4_ggga(X, Half, Acc, Y, log2_out_ggga(Half, s(0), s(Acc), Y)) → log2_out_ggga(X, s(s(Half)), Acc, Y)
U2_ggga(X, Half, Acc, Y, log2_out_ggga(X, s(Half), Acc, Y)) → log2_out_ggga(s(s(X)), Half, Acc, Y)
U1_ga(X, Y, log2_out_ggga(X, 0, s(0), Y)) → log2_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
LOG2_IN_GGGA(s(s(X)), Half, Acc, Y) → LOG2_IN_GGGA(X, s(Half), Acc, Y)
LOG2_IN_GGGA(X, s(s(Half)), Acc, Y) → U3_GGGA(X, Half, Acc, Y, small_in_g(X))
U3_GGGA(X, Half, Acc, Y, small_out_g(X)) → LOG2_IN_GGGA(Half, s(0), s(Acc), Y)
log2_in_ga(X, Y) → U1_ga(X, Y, log2_in_ggga(X, 0, s(0), Y))
log2_in_ggga(s(s(X)), Half, Acc, Y) → U2_ggga(X, Half, Acc, Y, log2_in_ggga(X, s(Half), Acc, Y))
log2_in_ggga(X, s(s(Half)), Acc, Y) → U3_ggga(X, Half, Acc, Y, small_in_g(X))
small_in_g(0) → small_out_g(0)
small_in_g(s(0)) → small_out_g(s(0))
U3_ggga(X, Half, Acc, Y, small_out_g(X)) → U4_ggga(X, Half, Acc, Y, log2_in_ggga(Half, s(0), s(Acc), Y))
log2_in_ggga(X, Half, Y, Y) → U5_ggga(X, Half, Y, small_in_g(X))
U5_ggga(X, Half, Y, small_out_g(X)) → U6_ggga(X, Half, Y, small_in_g(Half))
U6_ggga(X, Half, Y, small_out_g(Half)) → log2_out_ggga(X, Half, Y, Y)
U4_ggga(X, Half, Acc, Y, log2_out_ggga(Half, s(0), s(Acc), Y)) → log2_out_ggga(X, s(s(Half)), Acc, Y)
U2_ggga(X, Half, Acc, Y, log2_out_ggga(X, s(Half), Acc, Y)) → log2_out_ggga(s(s(X)), Half, Acc, Y)
U1_ga(X, Y, log2_out_ggga(X, 0, s(0), Y)) → log2_out_ga(X, Y)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
LOG2_IN_GGGA(s(s(X)), Half, Acc, Y) → LOG2_IN_GGGA(X, s(Half), Acc, Y)
LOG2_IN_GGGA(X, s(s(Half)), Acc, Y) → U3_GGGA(X, Half, Acc, Y, small_in_g(X))
U3_GGGA(X, Half, Acc, Y, small_out_g(X)) → LOG2_IN_GGGA(Half, s(0), s(Acc), Y)
small_in_g(0) → small_out_g(0)
small_in_g(s(0)) → small_out_g(s(0))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
U3_GGGA(Half, Acc, small_out_g) → LOG2_IN_GGGA(Half, s(0), s(Acc))
LOG2_IN_GGGA(X, s(s(Half)), Acc) → U3_GGGA(Half, Acc, small_in_g(X))
LOG2_IN_GGGA(s(s(X)), Half, Acc) → LOG2_IN_GGGA(X, s(Half), Acc)
small_in_g(0) → small_out_g
small_in_g(s(0)) → small_out_g
small_in_g(x0)
LOG2_IN_GGGA(X, s(s(Half)), Acc) → U3_GGGA(Half, Acc, small_in_g(X))
LOG2_IN_GGGA(s(s(X)), Half, Acc) → LOG2_IN_GGGA(X, s(Half), Acc)
small_in_g(s(0)) → small_out_g
POL(0) = 0
POL(LOG2_IN_GGGA(x1, x2, x3)) = 2·x1 + 2·x2 + x3
POL(U3_GGGA(x1, x2, x3)) = 2 + 2·x1 + x2 + 2·x3
POL(s(x1)) = 2 + x1
POL(small_in_g(x1)) = 2 + x1
POL(small_out_g) = 2
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ RuleRemovalProof
↳ QDP
↳ DependencyGraphProof
U3_GGGA(Half, Acc, small_out_g) → LOG2_IN_GGGA(Half, s(0), s(Acc))
small_in_g(0) → small_out_g
small_in_g(x0)